7.3 f90_unix_dirent
このモジュールは ISO/IEC 9945-1:1990 Portable Operating System Interface (POSIX) - Part 1: System Application Program Interface (API) [C Language] で詳細に規定される機能に対するFortran APIの一部を提供するものです。
このモジュール中の関数はセクション 5.1.2 ディレクトリ操作 に由来するものです。
エラー処理についてはF90_UNIX_ERRNO
に記述されています。
省略可能なERRNO
引数を用いた手続きに対し、エラーが生じERRNO
が存在しなかった場合には、プログラムは終了させられる点に注意してください。
このモジュール中のすべての手続きは個別であり、総称的なものではありません。
7.3.1 手続き
個々の手続きの記述において、KIND
が‘*’と表記されている引数はその
種別の任意の値を受け入れることができます。
他のKIND
表示にはF90_KIND
またはF90_UNIX_ERRNO
モジュールで
規定されている名前付きパラメータが使用されています。しかしこれらの名前付きパラ
メータはF90_UNIX_DIRENT
からエクスポートされていません。
SUBROUTINE CLOSEDIR(DIRUNIT,ERRNO) INTEGER(*),INTENT(IN) :: DIRUNIT INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: ERRNO
OPENDIR
によってオープンされたディレクトリストリームをクローズします。
DIRUNIT
がオープンされているディレクトリストリームを参照していない場
合には、エラーEBADF
(F90_UNIX_ERRNO
参照)が発生します。
SUBROUTINE OPENDIR(DIRNAME,DIRUNIT,ERRNO) CHARACTER(*),INTENT(IN) :: DIRNAME INTEGER(*),INTENT(OUT) :: DIRUNIT INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: ERRNOディレクトリストリームをオープンし、それに対するハンドルを
DIRUNIT
中
に返します。
起りうるエラーにはEACCES
, ENAMETOOLONG
, ENOENT
,
ENOTDIR
, EMFILE
, ENFILE
があります
(F90_UNIX_ERRNO
参照)。
SUBROUTINE READDIR(DIRUNIT,NAME,LENNAME,ERRNO) INTEGER(*),INTENT(IN) :: DIRUNIT CHARACTER(*),INTENT(OUT) :: NAME INTEGER(int32 or int64),INTENT(OUT) :: LENNAME INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: ERRNO
最初の/次のディレクトリエントリを読みます。
ファイルの名称はNAME
中にセットされます。その際、ファイル名称の長さが
LEN(NAME)
と異なった場合には、空白の追加、あるいは切取りが適宜行われま
す。
ファイル名称の長さはLEN(NAME)
中にセットされます。
ディレクトリエントリがそれ以上なくなった場合にはNAME
の内容は変わらず、
LENNAME
の値が負となります。
DIRUNIT
がOPENDIR
によって生成されたディレクトリストリームハンド
ルでない場合、あるいはCLOSEDIR
によってクローズされてしまっている場合、
エラーEBADF
(F90_UNIX_ERRNO
参照)が発生します。
SUBROUTINE REWINDDIR(DIRUNIT,ERRNO) INTEGER(*),INTENT(IN) :: DIRUNIT INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: ERRNOディレクトリストリームをリワインドします。従ってそのストリーム上で
READDIR
への次のコールが発行された場合には、ディレクトリ中の最初のファ
イル名が応答として返されることになります。